import type { UploadImage, UserData } from '@/types/user'
import { request } from '@/untils/http'

// 请求参数类型
interface GetCodeParams {
  mobile: string
  type: CodeType
}
type CodeType = 'login' | 'register' | 'changeMobile' | 'forgetPassword' | 'bindMobile'

// 返回类型
type GetCodeData = {
  code: string
}
export const getCodeApi = (params: GetCodeParams) => {
  return request.get<null, GetCodeData>('/code', {
    params: params,
  })
}

// 登录请求参数类型
interface loginParams {
  mobile: string
  code: string
}
// 登录返回类型
export interface loginResponse {
  /**
   * 用户名
   */
  account?: string
  /**
   * 头像
   */
  avatar?: string
  /**
   * 用户id
   */
  id: string
  /**
   * 脱敏手机号，带星号的手机号
   */
  mobile?: string
  /**
   * refreshToken
   */
  refreshToken: string
  /**
   * token
   */
  token: string
}
// 验证码登录
export const getLoginApi = (data: loginParams) => {
  return request.post<null, loginResponse>('/login', data)
}

// 密码登录

// 密码登录的请求参数
interface LoginPasswordParams {
  mobile: string
  password: string
}
export const getLoginCodeApi = (data: LoginPasswordParams) => {
  return request.post<null, loginResponse>('/login/password', data)
}

// 我的个人信息
export const userInfoApi = () => {
  return request.get<null, UserData>('/patient/myUser')
}

// 上传图片
export const uploadImageApi  = (filePath: string) => {
  return request.upload<null, UploadImage>('/upload', {
    name: 'file',
    filePath: filePath,
  })
}
